package cn.itcast.demo02;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;

/*读取数据
(硬盘--》内存)
步骤；
1，创建FileInputStream对象，构造方法中绑定要读取的数据源
2，使用FileInputStream对象中的方法read，读取文件
3，释放资源

字节输入流一次读取多个字节
String(byte[] bytes)
          通过使用平台的默认字符集解码指定的 byte 数组，构造一个新的 String。
String(byte[] bytes, int offset, int length)
          通过使用平台的默认字符集解码指定的 byte 子数组，构造一个新的 String

  明确两件事；
  1，方法的参数byte【】的作用？
     起到缓冲作用，存储每次读取的多个字节
     数组的长度一般定义为1024的整数倍
  2，方法的返回值int是什么？
      每次读取的有效字节个数

 */
public class Demo02InputStream {
    public static void main(String[] args) throws IOException {
        //1，创建一个 FileOutputStream对象，构造方法中传入数据目的地
        FileInputStream fis = new FileInputStream("E:\\WkJava\\day02-code\\b.txt");
        //2，使用FileInputStream对象中的方法read，读取文件
//        byte[] bytes = new byte[2];
//        int len = fis.read(bytes);
//        System.out.println(len);
//        System.out.println(Arrays.toString(bytes));
//        System.out.println(new String(bytes));
//
//        len = fis.read(bytes);
//        System.out.println(len);
//        System.out.println(new String(bytes));
//
//        len = fis.read(bytes);
//        System.out.println(len);
//        System.out.println(new String(bytes));
//
//        len = fis.read(bytes);
//        System.out.println(len);
//        System.out.println(new String(bytes));
//
//        len = fis.read(bytes);
//        System.out.println(len);
//        System.out.println(new String(bytes));

        byte[] bytes = new byte[1024];//存储读取到的多个字节
        int len = 0;
        while ((len= fis.read(bytes))!=-1){
            System.out.println(new String(bytes,0,len));
        }


        fis.close();
    }
}
